package com.winchain.chainbill.bank.service.impl;

import com.shell.bee.acct.transaction.po.AcctTxRec;
import com.shell.bee.base.utils.JsonUtil;
import com.shell.bee.base.utils.SpringContextUtil;
import com.shell.bee.base.utils.SystemUtil;
import com.shell.bee.base.utils.SystemUtil.SystemMode;
import com.shell.plumber.PlumberReturns;
import com.shell.plumber.bank.BankExtFeign;
import com.winchain.chainbill.bank.service.BankTxService;
import com.winchain.chainbill.util.CibBankUtil;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service("bankTxService")
public class BankTxServiceImpl implements BankTxService {
	@Autowired
	private BankExtFeign bankExtFeign;

	public Map<String, String> fire(AcctTxRec tx) throws Exception {
		Map<String, String> result = new HashMap();
		if (!SystemUtil.SystemMode.prod.equals(SystemUtil.getSystemMode())) {
			result.put("ret_code", SpringContextUtil.getProperty("non.prod.paid.result"));
			result.put("ret_msg", "��������������������������������");
			return result;
		}
		String bankCode = tx.getTxFiNo();
		if ("bank_cib".equals(bankCode)) {
			tx.setTxSn(CibBankUtil.getTrnuId());
		}
		String paramsJson = JsonUtil.toJson(tx);

		PlumberReturns<?> ret = this.bankExtFeign.trade(bankCode, paramsJson);

		result.put("ret_code", ret.getRspCode());
		result.put("ret_msg", ret.getMessage());
		return result;
	}

	public Map<String, String> fire(String source, List<AcctTxRec> trans) throws Exception {
		Map<String, String> result = new HashMap();
		if (!SystemUtil.SystemMode.prod.equals(SystemUtil.getSystemMode())) {
			result.put("ret_code", SpringContextUtil.getProperty("non.prod.paid.result"));
			result.put("ret_msg", "��������������������������������");
			return result;
		}
		for (AcctTxRec tran : trans) {
			result = fire(tran);
		}
		return result;
	}
}
